Computer systems have become an integral part of many homes and businesses. The more popular that computers become, the more demands that are placed upon them. For example, computer systems have become highly integrated into most businesses. These businesses depend upon their computer systems to be accurate, fast and reliable. Down time caused by system crashes and slow response times results in expensive losses, including losses in employee productivity. Accordingly, computer system designers must design components and entire systems with speed and reliability in mind.
Computer system designers have long realized that the microprocessor is instrumental to the overall performance of the computer system. In many cases, improvements in system performance are the direct result of improvements in the microprocessor. That is, the computer system performance is increased because of improvements in the microprocessor that, for example, allow it to handle more instructions in the same time period. In other cases, however, improvements in system performance are the direct result of relieving the microprocessor of certain time-intensive duties. These certain time-intensive duties are often shifted to other circuitry.
For example, instead of requiring the microprocessor to handle time-intensive data transfers, computer system designers have assigned certain data transfer control to specialized circuitry known as direct memory access (DMA) controllers. Generally, DMA controllers only need to know the base location of where data is to be moved from, the address to where the data should go, and the amount of data to be moved. Once the DMA controller knows this information, it will move the data without intimate microprocessor intervention. Without a DMA controller, the microprocessor itself would be forced to control the data transfer—thereby resulting in substantially decreased system performance.
Original DMA controllers are generally inadequate for modern computer systems and have been essentially abandoned. Instead of the original, dedicated DMA controllers, modern computer systems often use bus masters to perform DMA type transactions. For clarity, original, dedicated DMA controllers and bus masters that perform DMA type transactions will be referred to, collectively, as “DMA controllers.” Existing DMA controllers, however, are plagued by problems and limitations. Both present and future computer systems are in need of a next generation DMA controller.
One problem with existing DMA controllers is the lack of standardization and the resulting complexity caused by this lack of standardization. Existing DMA controllers. are designed and manufactured by a variety of vendors—each vendor having its own design features. In terms of DMA transactions, each vendor has its own way of rendering DMA transactions. Each DMA controller, accordingly, must have its own driver running in kernel mode. This multitude of drivers adds unneeded complexity to the computer system and causes DMA capabilities to be under-utilized.
As previously noted, DMA controllers require a driver running at kernel mode, which is a higher privilege (security) level than is, for example, the application mode used by user programs. Because DMA controllers require a driver running at kernel mode, a user application, which should not have access to the higher privilege level, cannot easily access existing DMA drivers and take advantage of DMA capabilities. In other words, a user application can generally only take full advantage of DMA capabilities with the help of the operating system (OS). The OS must transition the application from a lesser privilege level into a higher privilege level. The OS, for example, must transition the application from the untrusted domain where user applications operate to a trusted domain where drivers operate.
By allowing user applications access to the trusted domain, the integrity of the entire computer system is jeopardized. The user application, if given access to the trusted domain, could destroy or alter the OS, destroy data, crash the system, etc. Accordingly, a well designed computer system will strictly limit a user application's access to the trusted domain. When the access of a user application to the trusted domain is limited, however, the ability of the user application to utilize the features of existing DMA controllers is also limited—thereby forcing the microprocessor to perform data transfers that are better performed by a DMA controller.
In light of the deficiencies in the existing technology, a next generation DMA controller is needed.
More particularly, a DMA controller is needed that permits user applications to render DMA transactions without compromising computer system integrity. Further, a DMA controller is needed that allows user applications to render DMA transactions without intimate OS intervention. Additionally, a DMA controller is needed that allows access by both host processors and non-host processor devices to dynamically acquire and release DMA channels.